//package com.example.recordingpen_datacollection.config.contract;
//
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
//import java.time.Duration;
//import java.time.Instant;
//import java.util.Deque;
//import java.util.LinkedList;
//
//@Component
//public class RateLimiter {
//
//    private static final int MAX_REQUESTS = 60; // 最大存储的请求数量
//    private static final long MINUTE_IN_MILLIS = 60 * 1000; // 1分钟毫秒数
//
//    private final Deque<Instant> requestTimestamps = new LinkedList<>();
//
//    // 添加请求时间戳
//    public synchronized void addRequestTimestamp() {
//        Instant now = Instant.now();
//        if (requestTimestamps.size() == MAX_REQUESTS) {
//            requestTimestamps.removeFirst(); // 移除最旧的请求时间戳
//        }
//        requestTimestamps.addLast(now); // 添加新的请求时间戳
//
//        // 检查时间差
//        if (!requestTimestamps.isEmpty() &&
//            Duration.between(requestTimestamps.getFirst(), now).toMillis() < MINUTE_IN_MILLIS) {
//            // 时间差小于1分钟，拒绝访问（这里只是打印日志，实际中可以抛出异常或返回错误响应）
//            System.out.println("Too many requests within 1 minute, access denied.");
//            // 可以考虑在这里采取进一步措施，如暂时禁用接口
//        }
//    }
//
//    // （可选）定时清理过期的请求时间戳（在这个场景下可能不需要）
//    // @Scheduled(fixedRate = 60000) // 每分钟执行一次
//    // public void cleanupExpiredTimestamps() {
//    //     // 实现清理逻辑（如果需要的话）
//    // }
//}